home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / t3_1 / nexttsrc.lha / nexttsources / sources / comp / assembler / m682is.t < prev    next >
Encoding:
Text File  |  1988-02-05  |  1.9 KB  |  61 lines

  1. (herald (assembler m682is t 0)
  2.         (env t (assembler as_open)))
  3.  
  4. ; m68am
  5. (define (d@nil displ)
  6.     (cons (d@ax-bits 0)
  7.           (d@nil-ext 7 displ)))
  8.  
  9.   (define-fg (d@nil-ext  reg displ)
  10.       (printer "~s(d~d)" (? displ) (? reg))
  11.       (0) (f u 3 reg) (1) (0 0) (1) (1) (0) (1 0) (0) (0 0 0)
  12.       (f s 16 displ))
  13.  
  14. (define (*d@nil displ)
  15.     (cons (d@ax-bits 0)
  16.           (*d@nil-ext 7 displ)))
  17.  
  18.   (define-fg (*d@nil-ext  reg displ)
  19.       (printer "*~s(d~d)" (? displ) (? reg))
  20.       (0) (f u 3 reg) (1) (0 0) (1) (1) (0) (1 0) (0) (0 0 1)
  21.       (f s 16 displ))
  22.  
  23. (define (d@static reg displ)
  24.     (cons (d@ax-bits (fx- reg 8))
  25.           (d@static-ext (fx- reg 8) displ)))
  26.  
  27.   (define-fg (d@static-ext  reg displ)
  28.       (printer "-2(*~s(a~d))" (? displ) (? reg))
  29.       (0) (0 0 0) (1) (0 0) (1) (0) (1) (1 0) (1) (0 1 0)
  30.       (f s 16 displ) (f s 16 2))
  31.  
  32.  
  33.  
  34. (define-fg (m68/hack-jbcc cc displ)
  35.   (printer "jb~a   *~d" (format-br (? cc)) (? displ))
  36.   (0 1 1 0) (f u 4 cc) (f s 8 displ))
  37.  
  38.  
  39. (define (m68/divsl src dr dq)
  40.     (or (divsl src dr dq)
  41.         (error "no match for (divs.l ~g ~g ~g)" src dr dq)))
  42.  
  43. (define-fg (divsl (ea-d? src) (dr-number? dr) (dr-number? dq))
  44.     (printer "divs.l ~g,d~s:d~s" (if (pair? (? src)) (car (? src)) (? src)) 
  45.                                  (? dr) (? dq))
  46.     (0 1 0 0 1 1 0 0 0 1) (fg (if (pair? (? src)) (car (? src)) (? src)))
  47.     (0) (f u 3 dq) (1 0 0 0 0 0 0 0 0) (f u 3 dr)
  48.     (fg (if (pair? (? src)) (eal-fg (cdr (? src)) '(general 32)) null-fg)))
  49.  
  50. (define (m68/mulsl src dn)
  51.     (or (mulsl src dn)
  52.         (error "no match for (muls.l ~g ~g)" src dn)))
  53.  
  54. (define-fg (mulsl (ea-d? src) (dr-number? dn))
  55.     (printer "muls.l ~g,d~s" (if (pair? (? src)) (car (? src)) (? src))
  56.                              (? dn))
  57.     (0 1 0 0 1 1 0 0 0 0) (fg (if (pair? (? src)) (car (? src)) (? src)))
  58.     (0) (f u 3 dn) (1 0 0 0 0 0 0 0 0 0 0 0)
  59.     (fg (if (pair? (? src)) (eal-fg (cdr (? src)) '(general 32)) null-fg)))
  60.  
  61.